#ifndef SLIST_H
#define SLIST_H

#define SLTdatatype int

typedef struct single_link_list
{
    SLTdatatype data;
    struct single_link_list *next;
}SLTNode;

SLTNode* SLT_Buynode(SLTdatatype x);
void SLT_Print(SLTNode *Phead);

// 插入
void SLT_Pushback(SLTNode **pphead, SLTdatatype x);
void SLT_Pushfront(SLTNode **pphead, SLTdatatype x);

// 删除
void SLT_Popback(SLTNode **pphead);
void SLT_Popfront(SLTNode **pphead);

//查找
SLTNode *SLT_Find(SLTNode **Phead, SLTdatatype x);

// 指定位置插入
// 指定位置之前
void SLT_Insert(SLTNode **pphead, SLTdatatype x, SLTNode *pos);
// 指定位置之后
void SLT_InsertAfter(SLTdatatype x, SLTNode *pos);

// 删除指定位置节点
void SLT_Erase(SLTNode **pphead, SLTNode *pos);

// 删除指定位置以后节点
void SLT_EraseAfter(SLTNode **pphead, SLTNode *pos);

// 销毁链表
void SLT_Destory(SLTNode **pphead);

#endif

